package cn.sczhyt.modules.sys.controller;

import java.util.*;

import cn.sczhyt.common.annotation.SysLog;
import cn.sczhyt.modules.sys.form.UserInfoForm;
import com.baomidou.mybatisplus.core.metadata.IPage;
import cn.sczhyt.common.utils.PageUtils;
import cn.sczhyt.common.validator.ValidatorUtils;
import cn.sczhyt.modules.sys.entity.SysUserEntity;
import cn.sczhyt.modules.sys.entity.vo.RoleSearchEntity;
import cn.sczhyt.modules.sys.entity.vo.SysUserInfoVOEntity;
import cn.sczhyt.modules.sys.entity.vo.UserInfoVoEntity;
import cn.sczhyt.modules.sys.service.SysUserService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import cn.sczhyt.modules.sys.entity.SysUserInfoEntity;
import cn.sczhyt.modules.sys.service.SysUserInfoService;
import cn.sczhyt.common.utils.R;


/**
 * 政协委员信息表
 *
 * @author luojialin
 * @email 78357966@qq.com
 * @date 2020-05-29 11:42:12
 */
@Api(tags = "用户基本信息管理")
@RestController
@RequestMapping("sys/userinfo")
public class SysUserInfoController extends AbstractController {
    @Autowired
    private SysUserInfoService sysUserInfoService;
    @Autowired
    private SysUserService sysUserService;


    /**
     * 查询所有会议人员
     */
    @ApiOperation("查询所有会议人员")
    @PostMapping("/list")
    public R listAllRemoveMe(@RequestParam(defaultValue = "1") Integer page,
                             @RequestParam(defaultValue = "10") Integer limit,
                             @RequestBody(required = false) RoleSearchEntity search){

        IPage<UserInfoVoEntity> iPage = sysUserInfoService.listAllRemoveMe(page,limit,search);

        PageUtils list = new PageUtils(iPage);

        return R.ok().put("data", list);

    }

//    /**
//     * 获取所有委员列表
//     */
//    @ApiOperation("获取所有委员列表")
//    @GetMapping("/list")
//    //@RequiresPermissions("sys:userinfo:list")
//    public R listAll(){
//
//        List<SysUserInfoVOEntity> all = sysUserInfoService.findAll();
//
//        return R.ok().put("data", all);
//    }




    /**
     * 获取所有委员列表
     */
    @ApiOperation("获取所有委员列表")
    @GetMapping("/select")
    @RequiresPermissions("sys:userinfo:select")
    public R select(){

        Map<String, Object> map = new HashMap<>();

//        //如果不是超级管理员，则只查询自己所拥有的角色列表
//        if(!getUserId().equals(Constant.SUPER_ADMIN)){
//            map.put("create_user_id", getUserId());
//        }
        List<SysUserEntity> users = sysUserService.listByMap(map);

        List<SysUserInfoEntity> userInfos = sysUserInfoService.listByMap(map);



        return R.ok().put("data", users).put("data",userInfos);
    }


//
//    /**
//     * 获取所有委员列表
//     */
//    @RequestMapping("/list2")
//    @RequiresPermissions("sys:userinfo:list")
//    public R list(@RequestParam Map<String, Object> params){
//        PageUtils page = sysUserInfoService.queryPage(params);
//
//        return R.ok().put("data", page);
//    }
//
//    /**
//     * 模糊查询委员信息
//     */
//    @RequestMapping("/search2")
//    @RequiresPermissions("sys:userinfo:search")
//    public R search(@RequestBody SysUserInfoEntity userInfo){
//
//        List<SysUserInfoEntity> list = sysUserInfoService.selectLike(userInfo);
//
//        return R.ok().put("data", list);
//    }

    /**
     * 模糊查询委员列表
     */
    @ApiOperation("模糊查询委员列表")
    @PostMapping("/search")
    @RequiresPermissions("sys:userinfo:search")
    public R search2(@RequestBody SysUserInfoVOEntity userInfoVO){

        List<SysUserInfoVOEntity> list = sysUserInfoService.selectLike(userInfoVO);

        return R.ok().put("data", list);
    }

    /**
     * 通过user_id查询委员信息
     */
    @ApiOperation("查询委员信息")
    @GetMapping("/info/{userId}")
    public R infoByUserId(@PathVariable("userId") String userId){

        SysUserInfoEntity sysUserInfo = sysUserInfoService.getByUserId(userId);

        return R.ok().put("data", sysUserInfo);
    }



    /**
     * 新增委员
     */
    @ApiOperation("新增委员")
    @SysLog("新增委员账号")
    @PostMapping("/save")
    @RequiresPermissions("sys:userinfo:save")
    public R save(@RequestBody UserInfoForm vo){

        sysUserInfoService.saveAll(vo);

        return R.ok().put("data",vo);
    }


    /**
     * 修改
     */
    @ApiOperation("修改")
    @PostMapping("/update")
    public R update(@RequestBody UserInfoForm vo){

        sysUserInfoService.updateByUserId(vo);

        return R.ok();
    }

    /**
     * 删除
     */
    @ApiOperation("删除")
    @PostMapping("/delete/{userId}")
   // @RequiresPermissions("sys:userinfo:delete")
    public R delete(@PathVariable("userId") String userId){

        sysUserInfoService.deleteByUserId(userId);

        return R.ok();
    }

}
